# 丹迪克电压、电流三相负载箱 数据采集服务
# 电压负载箱数据发送格式为：
# 55 55 22 22
# 电流负载箱数据发送格式为：
# aa aa 55 55 22 22 33 33 来返回数据


import random
from flask import request
from flask_socketio import SocketIO, emit
from threading import Event
import time
import logging

# 全局变量
STOP_EVENT = Event()

# 测试过程参数
TEST_PARAMS = {
    "initial_voltage": 0,  # 起始电压
    "first_withstand": 303,  # 第一阶段耐压值
    "second_withstand": 242,  # 第二阶段耐压值
    "ramp_up_time": 10,  # 升压时间(秒)
    "ramp_down_time": 5,  # 降压时间(秒)
    "withstand_time": 60,  # 耐压时间(秒)
}

# 当前测试状态
current_state = "idle"
current_voltage = 0
test_start_time = 0
state_start_time = 0

# 存储当前运行的测试任务
current_test_task = None


def init_ddk_load_box_websocket(socketio):

    # 获取PLC模块专用logger，并确保它不会将日志传播到父logger
    logger = logging.getLogger("ws.load")
    logger.propagate = False  # 关键：禁用日志传播到父logger
    logger.info("启动 丹迪克三相负载箱设备控制服务 😭")

    # 客户端连接
    @socketio.on("connect", namespace="/ddk_three_loadbox")
    def handle_connect():
        """处理客户端连接"""
        global current_test_task
        logger.info(f"客户端连接，SID: {request.sid}")
    # 客户端失去连接
    @socketio.on("disconnect", namespace="/ddk_three_loadbox")
    def handle_disconnect():
        """处理客户端断开"""
        logger.info(f"客户端断开，SID: {request.sid}")

    # 设定电流负载箱 接收参数: 二次电流、功率因数、负荷 放大 100倍
    @socketio.on("current_load_box", namespace="/ddk_three_loadbox")
    def handle_current_load_box():
        """处理客户端断开"""
        logger.info(f"客户端断开，SID: {request.sid}")

    # 设定电压负载箱 接收参数: 二次电流、功率因数、负荷 放大 100倍
    @socketio.on("voltage_load_box", namespace="/ddk_three_loadbox")
    def handle_voltage_load_box():
        """处理客户端断开"""
        logger.info(f"客户端断开，SID: {request.sid}")

